#pragma once

#include "Configuration/UnityConfigure.h"

#if UNITY_IPHONE || UNITY_ANDROID || UNITY_BB10 || UNITY_TIZEN
#	define GFX_SUPPORTS_DXT_COMPRESSION 0
#	define GFX_SUPPORTS_DISPLAY_LISTS 0
#elif (UNITY_LINUX && GFX_SUPPORTS_OPENGLES20)
#warning Linux: determine the real configs here
#	define GFX_SUPPORTS_DXT_COMPRESSION 1
#	define GFX_SUPPORTS_DISPLAY_LISTS 0
#elif (UNITY_WII)
#	define GFX_SUPPORTS_DXT_COMPRESSION 0
#	define GFX_SUPPORTS_DISPLAY_LISTS 0
#else
#	define GFX_SUPPORTS_DXT_COMPRESSION 1
#	define GFX_SUPPORTS_DISPLAY_LISTS 1
#endif

#define GFX_ENABLE_DRAW_CALL_BATCHING (!ENABLE_GFXDEVICE_REMOTE_PROCESS && (UNITY_OSX || UNITY_WIN || UNITY_IPHONE || UNITY_ANDROID || UNITY_PEPPER || UNITY_LINUX || UNITY_FLASH || UNITY_XENON || UNITY_BB10 || UNITY_WEBGL || UNITY_TIZEN))
#define GFX_HAS_NO_FIXED_FUNCTION (UNITY_PS3 || UNITY_XENON || ((GFX_SUPPORTS_OPENGLES20 || GFX_SUPPORTS_OPENGLES30) && GFX_OPENGLESxx_ONLY)))

#define GFX_SUPPORTS_RENDERLOOP_PREPASS (!UNITY_WII && !UNITY_FLASH && !UNITY_WEBGL && !UNITY_BB10 && !UNITY_TIZEN)

#define GFX_ALL_BUFFERS_CAN_BECOME_LOST (UNITY_FLASH || GFX_SUPPORTS_OPENGLES20)
#define GFX_CAN_UNLOAD_MESH_DATA (GAMERELEASE && !UNITY_PEPPER && !UNITY_PS3 && !UNITY_WP8 && !GFX_ALL_BUFFERS_CAN_BECOME_LOST)

#define GFX_SUPPORTS_TRISTRIPS (!UNITY_FLASH)

#define GFX_EMULATES_NPOT_RENDERTEXTURES (UNITY_FLASH)

#define NV_STATE_FILTERING UNITY_ANDROID



#define GFX_ENABLE_SHADOW_BATCHING (GFX_ENABLE_DRAW_CALL_BATCHING && 1)

#define GFX_SUPPORTS_CONSTANT_BUFFERS (GFX_SUPPORTS_D3D11 || GFX_SUPPORTS_OPENGLES30)

#define GFX_USE_SPHERE_FOR_POINT_LIGHT (!UNITY_PS3)
